#include "rtsp_server.h"
#include <iostream>
#include <thread>
#include <chrono>

int main(int argc, char** argv) {
    std::cout << "RTSP服务器演示程序" << std::endl;
    std::cout << "======================" << std::endl;
    
    // 创建RTSP服务器实例，使用默认端口8554
    RTSPServer server;
    
    // 启动服务器
    if (!server.start()) {
        std::cerr << "启动RTSP服务器失败" << std::endl;
        return 1;
    }
    
    // 提示用户如何使用
    std::cout << "\n使用说明：" << std::endl;
    std::cout << "1. 服务器已启动，默认监听端口8554" << std::endl;
    std::cout << "2. 可以使用VLC播放器等客户端连接服务器" << std::endl;
    std::cout << "3. 连接地址格式：rtsp://服务器IP:8554/流名称" << std::endl;
    std::cout << "\n注意：" << std::endl;
    std::cout << "- 本示例程序默认不包含实际的媒体文件" << std::endl;
    std::cout << "- 请修改代码中的文件路径以指向您本地的媒体文件" << std::endl;
    
    // 提示用户可以修改的示例流配置
    std::cout << "\n示例流配置（需修改为实际文件路径）：" << std::endl;
    
    // 以下代码块为示例，需要用户根据实际情况修改文件路径
    /*
    // 添加H264流示例
    if (server.addH264Stream("stream1", "path/to/your/video.h264")) {
        std::cout << "已添加H264流: stream1" << std::endl;
    }
    
    // 添加H265流示例
    if (server.addH265Stream("stream2", "path/to/your/video.h265")) {
        std::cout << "已添加H265流: stream2" << std::endl;
    }
    
    // 添加MJPEG流示例
    if (server.addMJPEGStream("stream3", "path/to/your/video.mjpeg")) {
        std::cout << "已添加MJPEG流: stream3" << std::endl;
    }
    */
    
    // 为了方便演示，我们添加一个假的测试流（实际上无法播放，仅作为示例）
    std::cout << "\n已添加示例流（仅供参考，需要修改文件路径后才能实际播放）：" << std::endl;
    std::cout << "- rtsp://localhost:8554/test_stream" << std::endl;
    
    // 服务器运行时间
    std::cout << "\n服务器将运行60秒..." << std::endl;
    
    // 运行60秒后自动停止
    for (int i = 60; i > 0; --i) {
        std::cout << "服务器剩余运行时间: " << i << "秒\r";
        std::cout.flush();
        std::this_thread::sleep_for(std::chrono::seconds(1));
    }
    
    std::cout << "\n\n正在停止服务器..." << std::endl;
    
    // 停止服务器
    server.stop();
    
    std::cout << "\nRTSP服务器演示程序已结束" << std::endl;
    
    return 0;
}